<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
    清除对象中值为空，即 undefined 或 null 的属性，返回新对象，不修改原对象，详见 JavaScript tab - 15min
    function clean(target) { // 请完成 }
    var target = { a: undefined, b: null, c: false, d: '', e: 0, f : () => {} };
    clean(target) // => { c: false, d: '', e: 0, f: () => {} }, 同时需要保证 target 不变 clean(100) // => 100 clean(false) // => false clean() // => undefined
    如果你的答案是用 for in 完成，可以尝试使用其他方式遍历对象 - 基础题 function clean2(target) { // 请完成 }
    如果该规则可自定义如何做？默认规则是『删除为 undefined 或 null 的 key』- 5min /**
    @params {any} target
    @params {Function} removeIf
    / function clean3(target, removeIf) { // 请完成 }
    如果你的答案不是用 reduce 完成的，可以尝试使用 reduce 完成 - 5min function cleanUseReduce(target) { // 请完成 }
    若不允许有任何副作用，即不能修改 reduce 回调函数内的参数如何做？- 5min
    若能同时满足以上要求，可以用一个函数完成，否则请每一个步骤写一个函数。
    
    */

  </script>
</body>

</html>